﻿using System;
using System.Windows.Forms;
using PDFPatcher.Common;

namespace PDFPatcher.Functions
{
	public partial class InsertPageLabelForm : DraggableForm
	{
		public int PageNumber {
			get => _PageNumberBox.Text.ToInt32();
			set => _PageNumberBox.Text = value.ToText();
		}

		internal MuPdfSharp.PageLabel PageLabel => new MuPdfSharp.PageLabel(PageNumber - 1, (int)_StartAtBox.Value, _PrefixBox.Text, (MuPdfSharp.PageLabelStyle)Constants.PageLabelStyles.PdfValues[_NumericStyleBox.SelectedIndex]);

		public InsertPageLabelForm () {
			InitializeComponent ();
			_NumericStyleBox.AddRange (Constants.PageLabelStyles.Names).Select (0);
			_RemoveLabelButton.Enabled = false;
		}

		private void InsertPageLabelForm_Load (object sender, EventArgs e) {
			_CancelButton.Click += (s, args) => {
				DialogResult = DialogResult.Cancel;
				Close ();
			};
			_OkButton.Click += (s, args) => {
				DialogResult = DialogResult.OK;
				Close ();
			};
			_RemoveLabelButton.Click += (s, args) => {
				DialogResult = DialogResult.Abort;
				Close ();
			};
		}

		internal void SetValues (MuPdfSharp.PageLabel label) {
			var s = Array.IndexOf (Constants.PageLabelStyles.PdfValues, (char)label.NumericStyle);
			_NumericStyleBox.Select (s);
			_PrefixBox.Text = label.Prefix;
			_StartAtBox.SetValue (label.StartAt);
			_RemoveLabelButton.Enabled = true;
		}

		protected override void OnDeactivate (EventArgs e) {
			base.OnDeactivate (e);
			Close ();
		}

	}
}
